package utility;

import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.JOptionPane;

import model.Chamado;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class Util {
     
    public static String dataAtual(Date hoje){
    	
    	SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    	
		return sdf.format(hoje);
    }
    
    public static Date stringData(String data){
		
    	// 10/01/2014
    	// STRING FOR DATE
    	
	    Date dataFormatada = null;
	    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");  
	    
	    try {

		dataFormatada = formatter.parse(data);
		
	    } catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
		return dataFormatada;
		
	}

    public static String dataString(String data){
		
    	// DATE FOR STRING
    	
	    String dia;
	    String mes;
	    String ano;
	    String dataFormatada;
	    
	    dia = data.substring(8, 10);
	    mes = data.substring(5, 7);
	    ano = data.substring(0, 4);
	    
	    dataFormatada = dia +"/"+mes+"/"+ano;
	    
		return dataFormatada;
		
	}
    
    public static String formatoReal(double valor){
    	
    	String valorFormatado = null;
    	
    	valorFormatado = NumberFormat.getCurrencyInstance().format(valor);
    	
    	return valorFormatado;
    }
    
    public static Date dataAtual(){
    	
    	//DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
    	Date date = new Date(); 
    	
    	return date;

    }

    public static void gerarPdf(List<Chamado> lista) throws JRException, SQLException{
    	
		// compilacao do JRXML
		JasperReport report = JasperCompileManager.compileReport("C:/Sistema/report/Chamado.jrxml");

		// preenchimento do relatorio, note que o metodo recebe 3 parametros:
		// 1 - o relatorio
		//
		// 2 - um Map, com parametros que sao passados ao relatorio
		// no momento do preenchimento. No nosso caso eh null, pois nao
		// estamos usando nenhum parametro
		//
		// 3 - o data source. Note que nao devemos passar a lista diretamente,
		// e sim "transformar" em um data source utilizando a classe
		// JRBeanCollectionDataSource
		JasperPrint print = JasperFillManager.fillReport(report, null,
				new JRBeanCollectionDataSource(lista));

		// exportacao do relatorio para outro formato, no caso PDF
		JasperExportManager.exportReportToPdfFile(print,
				"C:/Sistema/temp/Chamado.pdf");

    }
    
    public static void abrirPdf(){
    	
		File pdf = new File("C:/Sistema/temp/Chamado.pdf");  
		
		try {  
		  
			Desktop.getDesktop().open(pdf);	
		  
		} catch(Exception ex) {  
		  ex.printStackTrace();  
		  JOptionPane.showMessageDialog(null, "Erro no Desktop: " + ex);  
		}

    }
    
   
}
